#!/usr/bin/env python3
# -*- coding: utf-8 -*-

"""
添加选择题到数据库
"""

from app import create_app
from models import db, Problem
import json

def add_choice_problems():
    """添加选择题"""
    app = create_app()
    
    with app.app_context():
        # 检查是否已存在选择题
        existing = Problem.query.filter_by(type='choice').count()
        if existing > 0:
            print(f"已存在 {existing} 个选择题，跳过添加")
            return
        
        # 选择题数据
        problems_data = [
            {
                'title': 'Python基础语法',
                'description': '在Python中，以下哪个关键字用于定义函数？',
                'type': 'choice',
                'difficulty': 'easy',
                'language': 'python',
                'answer': 'A',
                'options': json.dumps(['def', 'function', 'define', 'func']),
                'points': 10,
                'time_limit': 1000,
                'memory_limit': 128,
                'created_by': 1,
                'status': 'active'
            },
            {
                'title': 'Python数据类型',
                'description': '在Python中，以下哪个数据类型是不可变的？',
                'type': 'choice',
                'difficulty': 'easy',
                'language': 'python',
                'answer': 'B',
                'options': json.dumps(['list', 'tuple', 'dict', 'set']),
                'points': 10,
                'time_limit': 1000,
                'memory_limit': 128,
                'created_by': 1,
                'status': 'active'
            },
            {
                'title': 'Python循环语句',
                'description': '在Python中，以下哪个循环语句会至少执行一次？',
                'type': 'choice',
                'difficulty': 'medium',
                'language': 'python',
                'answer': 'C',
                'options': json.dumps(['for循环', 'while循环', 'do-while循环', 'Python没有这样的循环']),
                'points': 15,
                'time_limit': 1000,
                'memory_limit': 128,
                'created_by': 1,
                'status': 'active'
            },
            {
                'title': 'Python异常处理',
                'description': '在Python中，以下哪个关键字用于捕获异常？',
                'type': 'choice',
                'difficulty': 'medium',
                'language': 'python',
                'answer': 'A',
                'options': json.dumps(['try', 'catch', 'except', 'error']),
                'points': 15,
                'time_limit': 1000,
                'memory_limit': 128,
                'created_by': 1,
                'status': 'active'
            },
            {
                'title': 'Python面向对象',
                'description': '在Python中，以下哪个方法用于初始化类的实例？',
                'type': 'choice',
                'difficulty': 'medium',
                'language': 'python',
                'answer': 'B',
                'options': json.dumps(['__init__', '__init__', '__constructor__', '__new__']),
                'points': 15,
                'time_limit': 1000,
                'memory_limit': 128,
                'created_by': 1,
                'status': 'active'
            }
        ]
        
        # 添加题目到数据库
        for problem_data in problems_data:
            problem = Problem(**problem_data)
            db.session.add(problem)
        
        try:
            db.session.commit()
            print(f"成功添加 {len(problems_data)} 个选择题")
        except Exception as e:
            db.session.rollback()
            print(f"添加题目失败: {e}")

if __name__ == '__main__':
    add_choice_problems()
